<?php

/**
 * Description of AdversController
 *
 * @author FFOZEU
 */
namespace Applications\Modules\Advers\Backend\Controller;

if( !defined('IN') ) die('Hacking Attempt');

use Library\BackController;
use Library\HttpRequest;
use Library\Classe\Form\Form;

class AdversController extends BackController{
    //put your code here
    public function executePub(HttpRequest $request){
     
        $this->page->addVar('title', 'Liste des pub');
        
        $manager = $this->managers->getManagerOf('Advers');
        
        $advers = $manager->getAdvers();
        
        $this->page->addVar('adversliste', $advers);
        
        $this->leftcolumn();
        $this->rightcolumn();
    }
    
    private function leftcolumn(){
        $out = array();
        $out['pub.html']= 'Liste des pub';
        $out['add-pub.html']= 'Ajouter une pub';
        
        return $this->page->addVar('left_content', $out);
        
    }
    
    private function rightcolumn(){
        $out ='Gérez vos bannières publicitaires. Vous pouvez éditer ou supprimer une bannière. Voir le détail d\'une bannière';
        return $this->page->addVar('right_content', $out);
    }
    
    public function executeDelete(HttpRequest $request){
        
        $manager = $this->managers->getManagerOf('Advers');
        if($request->getExists('id')){
            $out['id'] = $request->getData('id');
            if($manager->deleteAdvers($out)){
                $this->errors = 'suppression réussie';
            }else{
                $this->errors = 'Echec lors de la suppression';
            }
            $this->app()->httpResponse()->redirect('pub.html');
            
        }
    }
    
        
    public function executeCreate(HttpRequest $request){
        $this->page->addVar('title', 'ajouter une pub');
        $this->leftcolumn();
        $this->rightcolumn();
        $manager = $this->managers->getManagerOf('Advers');
        
        $adversForm = new Form('addAdvers');
        $adversForm->action($request->requestURI());
        //ajout des champs
        
        $adversForm->add('File', 'image')    
                 ->label('Bannière')
                 ->required(true)
                 ;
        
        $adversForm->add('Text', 'lien')
                ->label('Lien')                
                ;
        $adversForm->add('Text', 'position')
                ->label('Position');
        
        $adversForm->add('Date', 'date_debut')
                       ->label('Date de début')
                       ->required(true);
        
        $adversForm->add('Date', 'date_fin')
                       ->label('Date de fin')
                       ->required(true);
        
        $adversForm->add('Text', 'width')
                ->label('Largeur');
        
         $adversForm->add('Text', 'height')
                ->label('Hauteur');
         
//        $adversForm->add('Textarea', 'description')
//                ->label('Description')
//                ->add_class('field_text')
//                ;
//         
        if($request->getExists('id')){
            $adversForm->add('Hidden', 'id')->value($request->getData('id'));
            $this->page->addVar('title', 'Modifier une pub');
            $adversForm->add('Submit', 'submit')->value('Modifier');
        }else{
            $adversForm->add('Submit', 'submit')->value('Ajouter');
        }
        
        if($request->getMethod('post')){
           //test de la validation du post
            if ($adversForm->is_valid($_POST)) {
                //traitement des dates
                $tab =(explode('-', $_POST['date_debut']));
                $tab1 = explode('-', $_POST['date_fin']);
                krsort($tab);
                krsort($tab1);
                $_POST['date_debut'] = implode('-', $tab);
                $_POST['date_fin'] = implode('-', $tab1);
                //gestion de l'image
                if(!empty($_FILES['image']['tmp_name'])) {
                    $_POST['image'] = $this->addImage('image') ;
                }
                if(!$request->getExists('id')){
                    if($manager->addAdvers($_POST)){
                        $this->app()->httpResponse()->redirect('pub.html');
                    }else{
                        $this->errors = 'Echec lors de l\'enregistrement';
                    }
                }else{
                    if($manager->updateAdvers($_POST)){
                        $this->app()->httpResponse()->redirect('pub.html');
                    }else{
                        $this->errors = 'Echec lors de la mise à jour';
                    }
                }
            }else{
                $adversForm->bound($_POST);
            }
        }else{
            if($request->getExists('id')){
               $advers = $manager->getAdversById(intval($request->getData('id')));
               $adversForm->bound($advers);
            }else{
                $adversForm->bound($_POST);
            }
        }
        $this->page->addVar('errors', $this->errors);
        $this->page->addVar('adversForm', $adversForm);  
    }
    
    public function executeShow(HttpRequest $request){
        $this->page->addVar('title', 'détail d\une bannière');
        $this->leftcolumn();
        $this->rightcolumn();
        $advers ='';
        $manager = $this->managers->getManagerOf('Advers');
        if($request->getExists('id')){
           $advers = $manager->getAdversById(intval($request->getData('id')));
        }else{
            $this->app()->httpResponse()->redirect('pub.html');
        }
        $this->page->addVar('errors', $this->errors);
        $this->page->addVar('dataObj', $advers);
    }


    /**
	 * Add or update a banner image
	 *
	 * @param array add image
	 */
	public function addImage($image)
	{


        if(empty($_FILES[$image]['tmp_name'])) return false ;

		$dossier = _SITE_UPLOAD_DIR_.'/banner/';
		$fichier = basename($_FILES[$image]['name']);
        $path_parts = pathinfo($_FILES[$image]['tmp_name']);
        $filename = $path_parts['filename'];
		$taille_maxi = 100000;
		$taille = filesize($_FILES[$image]['tmp_name']);
		$extensions = array('.GIF','.JPEG','.JPG','.PNG','.png', '.gif', '.jpg', '.jpeg');
		$extension = strrchr($_FILES[$image]['name'], '.');
		//Début des vérifications de sécurité...
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
		{
			 $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg';
		}
		if($taille>$taille_maxi)
		{
			// $erreur = 'Le fichier est trop gros...';
		}
		if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
		{
			 //On formate le nom du fichier ici...
			 $fichier = strtr($fichier, 
				  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
				  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
			 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $filename.time().$extension);
			 if(move_uploaded_file($_FILES[$image]['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que �a a fonctionné...
			 {
				  //echo 'Upload effectué avec succès !';
                  return $fichier ;
			 }
			 else //Sinon (la fonction renvoie FALSE).
			 {
				  echo 'Echec de l\'upload !';
                  return false ;
			 }
		}
		else
		{
			 echo $erreur;
		}
	}
}

?>
